import ajaxAsync from 'vue-xiaobu-utils'
import md5 from 'js-md5'

/**
 * 封装的协议发送工具,带有缓存
 * 调用方式ajaxAsync(url,paramsObj).then(function(body){}).catch(function(error){});
 * @param {String} urlString 协议地址
 * @param {Object} sendObj 参数
 * @param {Number} autoExLvl 自动处理异常等级,0表示都处理异常，1表示只自动处理协议网络异常，2表示不自动处理异常
 */
function chacheAjax(urlString, sendObj, autoExLvl = 0, cacheKey) {
  if (cacheKey) {
    cacheKey = md5(cacheKey)
  } else {
    cacheKey = md5(urlString)
  }
  // console.log('ajaxCacheKey:' + cacheKey)
  return new Promise((resolve, reject) => {
    let cacheValue = window.localStorage.getItem(cacheKey)
    console.log(cacheKey + ':' + cacheValue)

    // 存在缓存数据则直接返回缓存数据
    if (cacheValue) {
      resolve(JSON.parse(cacheValue))
    }
    // if (!window.prodInApp) {
    // 测试情况下，2s之后返回测试数据
    // window.localStorage.setItem(cacheKey, JSON.stringify(testData))
    // setTimeout(() => {
    //   resolve(testData)
    // }, 2000)
    // } else {
    ajaxAsync(urlString, sendObj, autoExLvl)
      .then(body => {
        window.localStorage.setItem(cacheKey, JSON.stringify(body))
      })
      .catch(error => {
        reject(error)
      })
    // }
  })
}

export { chacheAjax }
